package com.wanshun.cardatamodel.virtualpo;

import com.wanshun.common.geo.AreaPoint;
import com.wanshun.common.geo.GBPoint;
import com.wanshun.constants.platform.ordersystem.carorder.constants.OrderAttributeConst;
import com.wanshun.vpo.chargingservice.charteredbusordercharging.CharteredBusOrderInitialFeePo;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class OrderDetail {
	private String startAddr;// 开始地址
	private AreaPoint startPoint;

	private String endAddr;// 结束地址
	private AreaPoint endPoint;

	private Integer discountMoney;// 优惠金额

	private Integer callOrderRuleId;// 呼单规则id
	private Integer orderMatchParamVersionId;// 订单匹配参数版本id
	private Integer driverMatchParamVersionId;// 司机匹配参数版本id
	private Integer sysDispatchParamVersionId;// 系统参数分数版本id

	private String appUserPhone;// 用户手机号

	private String driverHeadImag;// 司机头像
	private String driverName;// 司机姓名
	private String driverPhone;// 司机手机号 接单司机的手机号

	private String carNum;// 车牌号码 接单司机的车牌号码
	private String orderDeviceId;

	private GBPoint startChargePoint; // 开始计费点
	private GBPoint arrivePoint; // 乘客上车点
	private GBPoint dispatchPoint; // 乘客下单地点
	private GBPoint robPoint; // 司机接单地点
	private GBPoint cancelPoint; // 取消订单地点
	private GBPoint stopChargePoint; // 结束计费点
	private Integer emptyMileage;  // 空始里程

	private boolean  prePayFlag;//是否是预支付单  true 预支付

	private boolean  isPrePay;//是否让乘客当前节点需要预支付  true 预支付
	// 支付节点:1-乘客叫车前,2-司机开始计费前 根据此节点判断是否需要预支付
	private Integer payNode;

	private boolean  hasPrePay;//乘客是否已经预支付  true 已经预支付

	private Integer prePayPrice;//预付费

	protected Integer platform; //下单平台号   1_安卓 ，2_ios

	private boolean hasPrePaySettle;//是否给司机预支付结算 true  结算
	
	private Set<Long> cancelDriver = new HashSet<Long>(2);
	
	private List<EndAddrPo> endAddrList = new ArrayList<EndAddrPo>(3);// 乘客修改终点地址集合
	
	private Integer isForOthers = OrderAttributeConst.ORDER_IS_FOR_OTHERS_N;
	private String contactName;// 联系人姓名（代交订单）
	private String contactPhone;// 联系人电话（代交订单）

	// 包车初始套餐信息
	private CharteredBusOrderInitialFeePo charteredBusOrderInitialFeePo;

	private String taoCanTitle;

	private Boolean isDerate = Boolean.FALSE;// 是否减免
	private Integer maxThankFee;// 感谢费限制
	private Boolean isOther = Boolean.FALSE;// 是否添加其它费用
	/** 计价预估时间 **/
	private Integer estimatedTime;

	private String driverDeviceId;//司机设备id
	/** 运力计价规则关系 */
	Map<Integer, List<Integer>> rideChargingRuleMap;
	
	public void addCancelDriver(Long driverId){
		if (null == cancelDriver) {
			cancelDriver = new HashSet<>(2);
		}
		cancelDriver.add(driverId);
	}

	public Boolean getDerate(){
		return isDerate;
	}

	public void setDerate( Boolean derate ){
		isDerate = derate;
	}

	public Integer getMaxThankFee(){
		return maxThankFee;
	}

	public void setMaxThankFee( Integer maxThankFee ){
		this.maxThankFee = maxThankFee;
	}

	public String getTaoCanTitle(){
		return taoCanTitle;
	}

	public void setTaoCanTitle( String taoCanTitle ){
		this.taoCanTitle = taoCanTitle;
	}

	public Set<Long> getCancelDriver() {
		return cancelDriver;
	}

	public Integer getPrePayPrice ( ) {
		return prePayPrice;
	}

	public boolean isHasPrePay ( ) {
		return hasPrePay;
	}

	public void setHasPrePay (boolean hasPrePay) {
		this.hasPrePay = hasPrePay;
	}

	public void setPrePayPrice (Integer prePayPrice) {
		this.prePayPrice = prePayPrice;
	}

	public Integer getPayNode ( ) {
		return payNode;
	}

	public Integer getEstimatedTime(){
		return estimatedTime;
	}

	public void setEstimatedTime( Integer estimatedTime ){
		this.estimatedTime = estimatedTime;
	}

	public void setPayNode ( Integer payNode) {
		this.payNode = payNode;
	}

	public boolean isPrePayFlag ( ) {
		return prePayFlag;
	}

	public void setPrePayFlag ( boolean prePayFlag) {
		this.prePayFlag = prePayFlag;
	}

	public String getStartAddr() {
		return startAddr;
	}

	public String getDriverDeviceId(){
		return driverDeviceId;
	}

	public void setDriverDeviceId( String driverDeviceId ){
		this.driverDeviceId = driverDeviceId;
	}

	public boolean isPrePay ( ) {
		return isPrePay;
	}

	public void setPrePay (boolean prePay) {
		isPrePay = prePay;
	}

	public void setStartAddr(String startAddr) {
		this.startAddr = startAddr;
	}

	public AreaPoint getStartPoint() {
		return startPoint;
	}

	public void setStartPoint(AreaPoint startPoint) {
		this.startPoint = startPoint;
	}

	public AreaPoint getEndPoint() {
		return endPoint;
	}

	public void setEndPoint(AreaPoint endPoint) {
		this.endPoint = endPoint;
	}

	public String getEndAddr() {
		return endAddr;
	}

	public void setEndAddr(String endAddr) {
		this.endAddr = endAddr;
	}

	public Integer getDiscountMoney() {
		return discountMoney;
	}

	public boolean isHasPrePaySettle() {
		return hasPrePaySettle;
	}

	public void setHasPrePaySettle( boolean hasPrePaySettle) {
		this.hasPrePaySettle = hasPrePaySettle;
	}

	public void setDiscountMoney( Integer discountMoney) {
		this.discountMoney = discountMoney;
	}

	public String getAppUserPhone() {
		return appUserPhone;
	}

	public void setAppUserPhone(String appUserPhone) {
		this.appUserPhone = appUserPhone;
	}

	public String getDriverPhone() {
		return driverPhone;
	}

	public void setDriverPhone(String driverPhone) {
		this.driverPhone = driverPhone;
	}

	public Integer getCallOrderRuleId() {
		return callOrderRuleId;
	}

	public void setCallOrderRuleId(Integer callOrderRuleId) {
		this.callOrderRuleId = callOrderRuleId;
	}

	public Integer getOrderMatchParamVersionId() {
		return orderMatchParamVersionId;
	}

	public void setOrderMatchParamVersionId(Integer orderMatchParamVersionId) {
		this.orderMatchParamVersionId = orderMatchParamVersionId;
	}

	public Integer getDriverMatchParamVersionId() {
		return driverMatchParamVersionId;
	}

	public void setDriverMatchParamVersionId(Integer driverMatchParamVersionId) {
		this.driverMatchParamVersionId = driverMatchParamVersionId;
	}

	public Integer getSysDispatchParamVersionId() {
		return sysDispatchParamVersionId;
	}

	public void setSysDispatchParamVersionId(Integer sysDispatchParamVersionId) {
		this.sysDispatchParamVersionId = sysDispatchParamVersionId;
	}

	public CharteredBusOrderInitialFeePo getCharteredBusOrderInitialFeePo(){
		return charteredBusOrderInitialFeePo;
	}

	public void setCharteredBusOrderInitialFeePo( CharteredBusOrderInitialFeePo charteredBusOrderInitialFeePo ){
		this.charteredBusOrderInitialFeePo = charteredBusOrderInitialFeePo;
	}

	public String getDriverName() {
		return driverName;
	}

	public void setDriverName(String driverName) {
		this.driverName = driverName;
	}

	public String getDriverHeadImag() {
		return driverHeadImag;
	}

	public void setDriverHeadImag(String driverHeadImag) {
		this.driverHeadImag = driverHeadImag;
	}

	public String getCarNum() {
		return carNum;
	}

	public void setCarNum(String carNum) {
		this.carNum = carNum;
	}

	public GBPoint getStartChargePoint() {
		return startChargePoint;
	}

	public void setStartChargePoint(GBPoint startChargePoint) {
		this.startChargePoint = startChargePoint;
	}

	public GBPoint getArrivePoint() {
		return arrivePoint;
	}

	public void setArrivePoint(GBPoint arrivePoint) {
		this.arrivePoint = arrivePoint;
	}

	public GBPoint getDispatchPoint() {
		return dispatchPoint;
	}

	public void setDispatchPoint(GBPoint dispatchPoint) {
		this.dispatchPoint = dispatchPoint;
	}

	public GBPoint getRobPoint() {
		return robPoint;
	}

	public void setRobPoint(GBPoint robPoint) {
		this.robPoint = robPoint;
	}

	public GBPoint getCancelPoint() {
		return cancelPoint;
	}

	public void setCancelPoint(GBPoint cancelPoint) {
		this.cancelPoint = cancelPoint;
	}

	public GBPoint getStopChargePoint() {
		return stopChargePoint;
	}

	public void setStopChargePoint(GBPoint stopChargePoint) {
		this.stopChargePoint = stopChargePoint;
	}

	public Integer getEmptyMileage() {
        return emptyMileage;
    }

    public void setEmptyMileage(Integer emptyMileage) {
        this.emptyMileage = emptyMileage;
    }

    public String getOrderDeviceId() {
		return orderDeviceId;
	}

	public void setOrderDeviceId(String orderDeviceId) {
		this.orderDeviceId = orderDeviceId;
	}

	public Integer getPlatform() {
		return platform;
	}

	public void setPlatform(Integer platform) {
		this.platform = platform;
	}

	public List<EndAddrPo> getEndAddrList() {
		return endAddrList;
	}

	public void setEndAddrList(List<EndAddrPo> endAddrList) {
		this.endAddrList = endAddrList;
	}

	public Integer getIsForOthers() {
		return isForOthers;
	}

	public void setIsForOthers(Integer isForOthers) {
		this.isForOthers = isForOthers;
	}

	public String getContactName() {
		return contactName;
	}

	public void setContactName(String contactName) {
		this.contactName = contactName;
	}

	public String getContactPhone() {
		return contactPhone;
	}

	public void setContactPhone(String contactPhone) {
		this.contactPhone = contactPhone;
	}

	public Boolean getIsOther() {
		return isOther;
	}

	public void setIsOther(Boolean isOther) {
		this.isOther = isOther;
	}

	public Map<Integer, List<Integer>> getRideChargingRuleMap() {
		return rideChargingRuleMap;
	}

	public void setRideChargingRuleMap(Map<Integer, List<Integer>> rideChargingRuleMap) {
		this.rideChargingRuleMap = rideChargingRuleMap;
	}
}
